#pragma once

#include <Arduino.h>
#include <HardwareSerial.h>

// GPS module control and NMEA parsing

void gpsInit(int rxPin, int txPin, int onoffPin, int ledPin, bool onoffActiveHigh, int defaultBaud);
void gpsHandle();

// Power / reset
void gpsPowerOn();
void gpsPowerOff();
void gpsResetPulse(uint16_t ms = 200);

// Debug / verbosity
void gpsSetDebug(bool on);
void gpsSetRaw(bool on);
void gpsSetLedActiveHigh(bool activeHigh);

// UART speed helpers
void gpsSetBaud(int rate);
void gpsScanBaud();

// Telemetry getters
float gpsLatitude();
float gpsLongitude();
String gpsLatestTime();
bool gpsHasFix();

// Send commands to the module
void gpsSendRaw(const String &text);                   // append CRLF if missing
void gpsSendNmea(const String &payloadNoDollar);       // auto add checksum + CRLF
void gpsSendHexStr(const String &hexTokens);           // space-separated hex bytes
